package org.smart4j.plugin.security;

import java.util.Set;

/**
 * Created by Wangminze on 2016/12/31.
 * Description:Smart Security接口
 *  <br/>
 *  可在应用中实现该接口，或者在smart.properties 文件中提供一下基于SQL的配置项
 *  <ul>
 *      <li>smart.plugin.security.jdbc.authc_query:根据用户名获取密码/li>
 *      <li>smart.plugin.security.jdbc.roles_query:根据用户名获取角色名集合</li>
 *      <li>smart.plugin.security.jdbc.permissions_query:根据角色名获取权限名集合</li>
 *  </ul>
 */
public interface SmartSecurity {

    /**
     * author: Wangminze
     * date: 2016/12/31
     * description:  根据用户名获取密码
     * @param username 用户名
     * @return 密码
     */
    String getPassword(String username);

    /**
     * author: Wangminze
     * date: 2016/12/31
     * description:  根据用户名获取角色名集合
     * @param username  用户名
     * @return 角色名集合
     */
    Set<String> getRoleNameSet(String username);

    /**
     * author: Wangminze
     * date: 2016/12/31
     * description:  根据角色名获取权限名集合
     * @param roleName 角色名
     * @return 权限名集合
     */
    Set<String> getPermissionNameSet(String roleName);
}
